package com.lh.fly; import android.app.Application; import android.content.Context; import android.util.DisplayMetrics; import com.lh.fly.api.Constants; import com.lh.fly.common.Config; import com.lh.fly.common.assist.Network; import com.squareup.okhttp.Cache; import com.squareup.okhttp.OkHttpClient; import java.io.File; import retrofit.RequestInterceptor; import retrofit.RestAdapter; import retrofit.client.OkClient; public class App extends Application { public static int SCREEN_WIDTH; public static int SCREEN_HEIGHT; private static RestAdapter mRestAdapter; private static Context sContext; @Override public void onCreate() { super.onCreate(); sContext = getApplicationContext(); init(); } private void init() { DisplayMetrics dm =getResources().getDisplayMetrics(); SCREEN_WIDTH = Math.min(dm.widthPixels, dm.heightPixels); SCREEN_HEIGHT = Math.max(dm.widthPixels, dm.heightPixels); OkHttpClient client = new OkHttpClient(); File cacheDirectory = new File(Config.CACHE_DIR); if (!cacheDirectory.exists()) { cacheDirectory.mkdirs(); } final Cache cache = new Cache(cacheDirectory, Config.CACHE_SIZE); client.setCache(cache); mRestAdapter = new RestAdapter.Builder() .setEndpoint(Constants.BASE_URL) .setClient(new OkClient(client)) .setRequestInterceptor(new RequestInterceptor() { @Override public void intercept(RequestFacade request) { if (Network.isConnected(getApplicationContext())) { int maxAge = 2; // read from cache for 1 minute request.addHeader( "Cache-Control", "public, max-age=" + maxAge); } else { int maxStale = 60 * 60 * 24 * 28; // tolerate 4-weeks stale request.addHeader( "Cache-Control", "public, only-if-cached, max-stale=" + maxStale); } } }) .build(); } public static RestAdapter getRestAdapter() { return mRestAdapter; } public static <T> T getService(Class<T> service) { return getRestAdapter().create(service); } public static Context getAppContext() { return sContext; } }